package leetcode101.string_problem;

/**
 * @author Synhard
 * @version 1.0
 * @class Code4
 * @description 696. 计数二进制子串
 * 给定一个字符串 s，计算具有相同数量 0 和 1 的非空（连续）子字符串的数量，并且这些子字符串中的所有 0 和所有 1 都是连续的。
 *
 * 重复出现的子串要计算它们出现的次数。
 * @tel 13001321080
 * @email 823436512@qq.com
 * @date 2021-05-22 8:48
 */
public class Code4 {
    public static void main(String[] args) {

    }
    public static int countBinarySubstrings(String s) {
        int cur = 1, pre = 0, count = 0;
        for (int i = 1; i < s.length(); i++) {
            if (s.charAt(i) == s.charAt(i - 1)) {
                cur += 1;
            } else {
                pre = cur;
                cur = 1;
            }
            if (pre >= cur) {
                count++;
            }
        }
        return count;
    }
}
/*
从左往右遍历数组，记录和当前位置数字相同且连续的长度，以及其之前连续的不同数字的
长度。举例来说，对于 00110 的最后一位，我们记录的相同数字长度是 1，因为只有一个连续 0；
我们记录的不同数字长度是 2，因为在 0 之前有两个连续的 1。若不同数字的连续长度大于等于
当前数字的连续长度，则说明存在一个且只存在一个以当前数字结尾的满足条件的子字符串。
 */